var str = 'i am 刘光辉';
// 将字符串转换为Buffer数据
var b = Buffer.from(str);
console.log(str);
console.log(b);
// 1. 在Buffer中，字符是以2进制的方式存储的，但是是以16进制的方式显示（因为二进制显示的话太长了）
// 2. 在Buffer中，一个英文字母占1个字节，一个汉字占3个字节
// 3. 在Buffer中，1个字节占8位，所以每个元素的范围是从00000000-11111111（转化为16进制是：00-ff）
// 4. Buffer缓冲区和数组很像
// 字符串的大小（8个字符）
console.log(str.length);
// 占用内存的大小（14个字节）
console.log(b.length);


// 创建一个指定大小的Buffer(因为是直接对内存进行操作，所以大小不能改变)
var bf1 = Buffer.alloc(10);
bf1[0] = 0xaa;
bf1[1] = 11;
bf1[2] = 666;
// 666转化为2进制：0010 1001 1010
// Buffer会自动读取后面8位，即1001 1010，他转化为16进制是：9A
// 在控制台或页面中的数值全都以10进制的方法输出（规定，防止与其他进制的数字混淆）
console.log(bf1);

// 创建一个指定大小的Buffer
// 相比alloc方法，他不安全，因为他不会先清除内存中原有的数据(可能含有用户的隐私数据)，
// 他是直接把内存拿来用
var bf2 = Buffer.allocUnsafe(5);
console.log(bf2);